home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / vil310 / demo / vdemo310.src < prev    next >
Text File  |  1995-02-20  |  47KB  |  1,100 lines

  1. 100 '---------------  VILローダファイル Ver3.10 ---------------
  2. 110 '--------------------  VIL組み込み開始 --------------------
  3. 120 CLEAR ,,512,FRE(4)-1024*128,0,0               'メモリ領域設定
  4. 130 SCREEN 0:CLS
  5. 140 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0:VIL_W4%=0  '汎用ワーク変数
  6. 150 VIL_W5%=0:VIL_W6%=0:VIL_W7%=0:VIL_W8%=0:VIL_W9%=0
  7. 160 VIL_W0&=0:VIL_W1&=0:VIL_W2&=0:VIL_W3&=0:VIL_W4&=0  '汎用ワーク変数
  8. 170 VIL_W5&=0:VIL_W6&=0:VIL_W7&=0:VIL_W8&=0:VIL_W9&=0
  9. 180 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$=""
  10. 190 'ループ変数                長さ
  11. 200 VIL_I%=0:VIL_J%=0:VIL_K%=0:VIL_L%=0
  12. 210 '文字列汎用,ファイル名汎用,描画色  ,背景色(0..15)
  13. 220 VIL_A$="":VIL_F$="":VIL_C%=15:VIL_CB%=0:VIL_CC%=7
  14. 230 '左上隅・右下隅座標
  15. 240 VIL_X%=0:VIL_Y%=0:VIL_W%=0:VIL_Z%=0
  16. 250 'X・Y軸方向長さ  ,個数
  17. 260 VIL_XL%=0:VIL_YL%=0:VIL_XN%=0:VIL_YN%=0
  18. 270 'パレット番号,入力番号,入力キー,アスキーコード,パッドコード
  19. 280 VIL_P%=0:VIL_KN%=0:VIL_K$="":VIL_KY%=0:VIL_PAD%=0
  20. 290 'マウス位置
  21. 300 VIL_MX%=0:VIL_MY%=0:VIL_MW%=0:VIL_MZ%=0
  22. 310 '
  23. 320 VIL_E%=0                                      'エラー番号
  24. 330 VIL_DIR$=""                                   'VILディレクトリ
  25. 340 VIL_APPCNF$="APPLI.CNF"                       'アプリ設定ファイル名
  26. 350 DIM VIL_ENVNAM$(31),VIL_ENVVAL$(31)           '環境変数 名前/値
  27. 360 VIL_ENVNUM%=0                                 '環境変数の数
  28. 370 VIL_VER%=310                                  'VIL VER3.10
  29. 380 '
  30. 390 *VIL_CNF                              '設定ファイル"VIL.CNF"読込
  31. 400 PRINT"Searching "+CHR$(34)+"VIL.CNF"+CHR$(34)
  32. 410 PRINT"Searching current directory"
  33. 420 GOSUB *VIL_ERR_ON:VIL_E%=0
  34. 430 OPEN "I",#1,"VIL.CNF"                 'カレントディレクトリを探す
  35. 440 IF VIL_E%=63 THEN
  36. 450   PRINT"Searching root directory"
  37. 460   VIL_E%=0
  38. 470   OPEN "I",#1,"\VIL.CNF"              'ルートディレクトリを探す
  39. 480   IF VIL_E%=63 THEN                   '見つからなければ設定中止
  40. 490     PRINT"WARNING:"+CHR$(34)+"VIL.CNF"+CHR$(34)+" not found"
  41. 500     GOTO *VIL_L_BGN
  42. 510   ENDIF
  43. 520 ENDIF
  44. 530 PRINT"Reading "+CHR$(34)+"VIL.CNF"+CHR$(34)
  45. 540 '
  46. 550 '    環境変数設定
  47. 560 WHILE EOF(1)=0
  48. 570   GOSUB *VIL_LNR
  49. 580   VIL_W0%=INSTR(VIL_W0$," "):VIL_W1%=VIL_W0%          'スペース開始
  50. 590   WHILE MID$(VIL_W0$,VIL_W1%,1)=" ":VIL_W1%=VIL_W1%+1:WEND
  51. 600   VIL_ENVNAM$(VIL_ENVNUM%)=LEFT$(VIL_W0$,VIL_W0%-1)
  52. 610   VIL_ENVVAL$(VIL_ENVNUM%)= MID$(VIL_W0$,VIL_W1%)
  53. 620   VIL_ENVNUM%=VIL_ENVNUM%+1
  54. 630 '  GOSUB *VIL_LNR
  55. 640 WEND
  56. 650 'FOR VIL_I%=0 TO VIL_ENVNUM%-1:                                                 PRINT VIL_I%;"|";VIL_ENVNAM$(VIL_I%);"|";VIL_ENVVAL$(VIL_I%);"|":          NEXT':VIL_W0$=INPUT$(1)                        '*** デバッグ用
  57. 660 VIL_W0%=SEARCH(VIL_ENVNAM$,"VILDIR"):                                        IF VIL_W0%>-1 THEN VIL_DIR$=VIL_ENVVAL$(VIL_W0%) 'VILディレクトリ設定
  58. 670 VIL_W0%=SEARCH(VIL_ENVNAM$,"APPLICNF"):                                      IF VIL_W0%>-1 THEN VIL_APPCNF$=VIL_ENVVAL$(VIL_W0%)
  59. 680 CLOSE #1
  60. 690 '
  61. 700 *VIL_L_BGN                                ' VIL リンク開始
  62. 710 ON ERROR GOTO 0
  63. 720 *VIL_L_BAS:                                                                  CHAIN MERGE VIL_DIR$+"VIL_BAS.BAS",*VIL_L_VWM,ALL,DELETE *VIL_L_BAS
  64. 730 *VIL_L_VWM:                                                                  CHAIN MERGE VIL_DIR$+"VIL_VWM.BAS",*VIL_L_END,ALL,DELETE *VIL_L_VWM
  65. 740 *VIL_L_END                                ' VIL リンク終了
  66. 750 '
  67. 760 GOSUB *VIL_ERR_ON:GOSUB *VIL_DEFFN:GOTO *MAIN
  68. 770 '
  69. 780 *VIL_DEFFN
  70. 790 '  S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める
  71. 800 '  P :正の整数     I  :整数                 R  :実数
  72. 810 DEF FNVIL_P2S$(X&)       =MID$(STR$(X&),2)
  73. 820 DEF FNVIL_P2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
  74. 830 DEF FNVIL_P2S0$(X&,Y%)   =RIGHT$("0000000000"+MID$(STR$(X&),2),Y%)
  75. 840 DEF FNVIL_I2S$(X&)       =MID$(STR$(X&),1-(X&>=0))
  76. 850 DEF FNVIL_I2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
  77. 860 '符号1桁(+-) + 00… + 数値
  78. 870 DEF FNVIL_I2S0$(X&,Y%)   =MID$("+-",1-(X&<0),1)                                                       +RIGHT$("0000000000"+MID$(STR$(ABS(X&)),2)                                          ,Y%-1)
  79. 880 DEF FNVIL_R2S$(X#)       =MID$(STR$(X#),1-(X#>=0))
  80. 890 DEF FNVIL_R2SS$(X#,Y%,Z%)=RIGHT$("          "+STR$(FIX(X#)),Y%)+"."                                   +MID$("0000000000"+STR$(X#)+"0000000000"                                          ,INSTR("0000000000"+STR$(X#),".")+1,Z%)
  81. 900 DEF FNVIL_R2S0$(X#,Y%,Z%)=MID$("+-",1-(X#<0),1)+RIGHT$("0000000000"              +MID$(STR$(FIX(ABS(X#))),2),Y%-1)+MID$("0000000000"+STR$(X#)                 +"0000000000",INSTR("0000000000"+STR$(X#),".")+1,Z%)
  82. 910 RETURN
  83. 920 '
  84. 930 'VIL汎用モジュール
  85. 940 '
  86. 950 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN
  87. 960 '
  88. 970 *VIL_ERR:VIL_E%=ERR:RESUME NEXT
  89. 980 '*VIL_ERR:SCREEN 0:VIL_E%=ERR:PRINT "ERR";VIL_E%;"IN";ERL:BEEP:A$=INPUT$(1):IF A$=" " THEN ON ERROR GOTO 0 ELSE RESUME NEXT   'デバッグ用
  90. 990 '
  91. 1000 *VIL_CNFOP
  92. 1010 'VIL_APPCNF$ をオープン。正常終了時 VIL_E%=0
  93. 1020 VIL_E%=0
  94. 1030 OPEN "I",#1,VIL_APPCNF$
  95. 1040 RETURN
  96. 1050 '
  97. 1060 *VIL_CNFCL
  98. 1070 'VIL_APPCNF$ をクローズ。正常終了時 VIL_E%=0
  99. 1080 VIL_E%=0
  100. 1090 CLOSE #1
  101. 1100 RETURN
  102. 1110 '
  103. 1120 *VIL_CNFERR
  104. 1130 'VIL設定ファイル読み込み時のエラー処理(現バージョンでは強制終了)
  105. 1140 PRINT"CNFファイルに誤りがあります"
  106. 1150 PRINT"エラー行:";VIL_W0$
  107. 1160 STOP
  108. 1170 RETURN
  109. 1180 '
  110. 1190 *VIL_LNR
  111. 1200 '1行読み込み(空行・コメント行スキップ)
  112. 1210 LINE INPUT #1,VIL_W0$':SCREEN 0:PRINT VIL_W0$;"!"
  113. 1220 IF (VIL_W0$="" OR LEFT$(VIL_W0$,1)="'") AND EOF(1)=0 THEN *VIL_LNR
  114. 1230 RETURN
  115. 1240 '
  116. 1250 '--------------------  VIL組み込み終了 --------------------
  117. 20000 '
  118. 20010 '<<<<<<<<<<<<<<<  Visual Interface Library Demo V3.10  >>>>>>>>>>>>>>>
  119. 20020 '
  120. 20030 *MAIN       'VILは最初にこのラベルを呼び出す
  121. 20040 '
  122. 20050 RANDOMIZE TIME:DEFINT A-Z
  123. 20060 '
  124. 20070 'SCREEN 1,0,3,1:VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
  125. 20080 VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
  126. 20090 PALETTE@:CLS
  127. 20100 PLAY OFF
  128. 20110 '
  129. 20120 '起動画面
  130. 20130 '
  131. 20140 SCREEN 0:CLS
  132. 20150 LINE(160,160)-(479,319),PSET,7,BF
  133. 20160 SYMBOL(224,168),"VIL",4,4,4
  134. 20170 SYMBOL(224,260),"Visual Interface Library",1,1,0
  135. 20180 SYMBOL(224,280)," Demonstration  Program ",1,1,0
  136. 20190 '
  137. 20200 '<<<<<<<<<<<<<<<<<<<<  VIL INITIALIZE  >>>>>>>>>>>>>>>>>>>>
  138. 20210 '
  139. 20220 'VILパッケージ初期化
  140. 20230 '
  141. 20240 GOSUB *VIL_CNFOP
  142. 20250 '
  143. 20260 GOSUB *VIL_ENV_INITM
  144. 20270 '
  145. 20280 GOSUB *VIL_BEEP_INITM
  146. 20290 '
  147. 20300 VIL_W0&=1024*500\2            '画面退避(最大ウィンドウ総面積)
  148. 20310 VIL_W1%=20                    '最大ウィンドウ番号
  149. 20320 GOSUB *VIL_WIN_INITM
  150. 20330 '
  151. 20340 GOSUB *VIL_VKEY_INITM
  152. 20350 '
  153. 20360 VIL_W0%=120                   '最大メニュー番号
  154. 20370 VIL_W1%=256                   '最大ボックス数
  155. 20380 VIL_W2%=10                    '設定メニュー最大行数
  156. 20390 GOSUB *VIL_MSEL_INITM
  157. 20400 '
  158. 20410 VIL_W0%=2                     'ヒストリ系列数
  159. 20420 GOSUB *VIL_INP_INITM
  160. 20430 '
  161. 20440 VIL_W0&=100000                '画像データバッファ要素数
  162. 20450 VIL_W1%=50                    '画像データインデックス要素数
  163. 20460 VIL_W2&=100                   'パレットデータバッファ要素数
  164. 20470 VIL_W3%=10                    'パレットデータインデックス要素数
  165. 20480 GOSUB *VIL_MG_INITM
  166. 20490 '
  167. 20500 VIL_W0%=10                   '最大ウィンドウ通し番号
  168. 20510 VIL_W1%=8                     'ウィンドウ背景色用パレット番号
  169. 20520 VIL_W2%=0                     '枠幅パターン数
  170. 20530 GOSUB *VIL_VWM_INITM
  171. 20540 '
  172. 20550 GOSUB *VIL_SBAR_INITM
  173. 20560 '
  174. 20570 GOSUB *VIL_SEL_INITM
  175. 20580 '
  176. 20590 IF VIL_E% THEN PRINT"VIL INIT ERROR!!":BEEP:STOP
  177. 20600 GOSUB *VIL_CNFCL
  178. 20610 '
  179. 20620 'アプリ環境ファイル読み込み
  180. 20630 '
  181. 20640 GOSUB *VIL_ENV_ROP
  182. 20650   GOSUB *VIL_BEEP_ENVR
  183. 20660   GOSUB *VIL_WIN_ENVR
  184. 20670   GOSUB *VIL_VKEY_ENVR
  185. 20680   GOSUB *VIL_MSEL_ENVR
  186. 20690   GOSUB *VIL_INP_ENVR
  187. 20700   GOSUB *VIL_MG_ENVR
  188. 20710   GOSUB *VIL_VWM_ENVR
  189. 20720   GOSUB *VIL_SBAR_ENVR
  190. 20730   GOSUB *VIL_SEL_ENVR
  191. 20740 GOSUB *VIL_ENV_RCL
  192. 20750 '
  193. 20760 '<<<<<<<<<<<<<<<<<<<<  INIT  >>>>>>>>>>>>>>>>>>>>
  194. 20770 DIM TXTBUF$(51)
  195. 20780 RESTORE *TXT_DATA:FOR I=0 TO 51:READ TXTBUF$(I):NEXT
  196. 20790 *TXT_DATA
  197. 20800 DATA "     ~ スクロールバー ~     "
  198. 20810 DATA " このウィンドウは縦方向のスクロールバー"
  199. 20820 DATA "が付いています。                       "
  200. 20830 DATA "              上スクロールスイッチ→┌┐"
  201. 20840 DATA "                                   ├┤"
  202. 20850 DATA "              リージョン────┬→││"
  203. 20860 DATA "                               │  ├┤"
  204. 20870 DATA "              インジケータ────→││"
  205. 20880 DATA "                                │  ├┤"
  206. 20890 DATA "                                └→││"
  207. 20900 DATA "                                    ├┤"
  208. 20910 DATA "              下スクロールスイッチ→└┘"
  209. 20920 DATA " 下スクロールスイッチをクリックすると、"
  210. 20930 DATA "この説明文の続きを読むことができます。最"
  211. 20940 DATA "初の方を読みたいときは、上スクロールスイ"
  212. 20950 DATA "ッチをクリックしてください。            "
  213. 20960 DATA "                                       "
  214. 20970 DATA " インジケータは、説明文全体のうちどの部"
  215. 20980 DATA "分がウィンドウ内に表示されているかを示し"
  216. 20990 DATA "ています。このインジケータをドラッグする"
  217. 21000 DATA "ことで、任意の位置に一気に移動することが"
  218. 21010 DATA "できます。                              "
  219. 21020 DATA "                                       "
  220. 21030 DATA " スクロールスイッチをクリックすると表示"
  221. 21040 DATA "内容を一行ずつ進める/戻すことができます"
  222. 21050 DATA "が、インジケータ上下のリージョンをクリッ"
  223. 21060 DATA "クすると、一ページずつ進める/戻すことが"
  224. 21070 DATA "できます。                              "
  225. 21080 DATA "                                       "
  226. 21090 DATA " この後では横方向のスクロールバーも登場"
  227. 21100 DATA "しますが、操作方法は同様です。         "
  228. 21110 DATA ""
  229. 21120 DATA " この文章、ある程度長さがないとスクロー"
  230. 21130 DATA "ルバーの例になりませんので、以下余談を書"
  231. 21140 DATA "きます(^_^;)。なお、このウィンドウを抜け"
  232. 21150 DATA "るときは、クローズスイッチを押してくださ"
  233. 21160 DATA "い。"
  234. 21170 DATA ""
  235. 21180 DATA " このウィンドウマネージャ(WM)は一応"
  236. 21190 DATA "VILの標準WMとして設計しています。で"
  237. 21200 DATA "すから人によっては高機能すぎると思われる"
  238. 21210 DATA "かもしれませんが、使わない属性は指定しな"
  239. 21220 DATA "いようにすれば、アプリケーション側で対応"
  240. 21230 DATA "ルーチンを書く必要もありません。        "
  241. 21240 DATA ""
  242. 21250 DATA "  例えばRPGを作るのなら、全てのウィン"
  243. 21260 DATA "ドウで全属性OFFでも問題ないでしょう。"
  244. 21270 DATA "個人的には MOVE 属性ぐらいは対応すると、"
  245. 21280 DATA "コマンドウィンドウのレイアウトが自由にで"
  246. 21290 DATA "きて楽しいと思いますが……(妙に具体的な"
  247. 21300 DATA "例(^_^;)。フリコレ11にはなんとか(謎))。"
  248. 21310 DATA ""
  249. 21320 '
  250. 21330 DIM SHTMAP(63,7)
  251. 21340 RESTORE *SHTMAP_DATA
  252. 21350 FOR Y=0 TO 7
  253. 21360   READ A$
  254. 21370   FOR X=0 TO 63
  255. 21380     SHTMAP(X,Y)=VAL(MID$(A$,X+1,1))
  256. 21390   NEXT
  257. 21400 NEXT
  258. 21410 '
  259. 21420 *SHTMAP_DATA
  260. 21430 DATA 0000000000000000004000000000000000000040040000000222222242222222
  261. 21440 DATA 0000000000001322224222200001000000000040040000000000000040000000
  262. 21450 DATA 0000000000000000004000000005000000100040040000000222222222222222
  263. 21460 DATA 0000000013222222224000000004000001010222022000000000000012222222
  264. 21470 DATA 0000000000000000004000010134000000100004000000000000000012222222
  265. 21480 DATA 0001000000000000004000050004000000500002224200000222222222222222
  266. 21490 DATA 0005000000000000004000042224000000400000004000000000000040000000
  267. 21500 DATA 0004000000000000004000040004000000400000004000000222222242222222
  268. 21510 '
  269. 21520 VIL_MG_F$="VDEMO310":GOSUB *VIL_MG_LD
  270. 21530 '
  271. 21540 '<<<<<<<<<<<<<<<<<<<<  MAIN MENU  >>>>>>>>>>>>>>>>>>>>
  272. 21550 *MAINMENU
  273. 21560 'SCREEN 1,1:SCREEN@0:PALETTE@:CLS
  274. 21570 'SCREEN 1,0:SCREEN@0:CLS
  275. 21580 'MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
  276. 21590 'ON ERROR GOTO 0'**********
  277. 21600 'GOTO *APPLY' *VWM_XSCRLBAR_0
  278. 21610 GOSUB *VIL_WIN_PMA
  279. 21620 CLS:PALETTE 4,[100,0,150]
  280. 21630 LINE(0,0)-(639,479),PSET,%4,BF
  281. 21640 LINE(216,128)-(423,399),PRESET,,BF
  282. 21650 SYMBOL(224,32),"Visual Interface Library",1,1,7
  283. 21660 SYMBOL(272,64),"VIL",2,2,4,,,7
  284. 21670 SYMBOL(192,104),"デモンストレ-ション  プログラム",1,1,4
  285. 21680 RESTORE *MAINMENU_DATA
  286. 21690 FOR Y=0 TO 3
  287. 21700   READ A$
  288. 21710   SYMBOL(232,Y*32+144),FNVIL_P2S$(Y+1)+" "+A$,1,1,7
  289. 21720 NEXT
  290. 21730 '
  291. 21740 *MAINMENU_DATA
  292. 21750 DATA "はじめに","基本パッケージ"
  293. 21760 DATA "ウィンドウマネージャ","応用例"
  294. 21770 '
  295. 21780 VIL_X%=224:VIL_Y%=142:VIL_W%=VIL_X%+191:VIL_Z%=VIL_Y%+19
  296. 21790 VIL_XN%=1:VIL_YN%=4:VIL_YL%=32:VIL_C%=15:VIL_CB%=0
  297. 21800 VIL_MSEL_BB%=1:VIL_MSEL_BE%=4:VIL_MSEL_BD%=0:VIL_MSEL_BAM%=0:
  298. 21810 VIL_MSEL_MN%=100:VIL_MSEL_BC%=0
  299. 21820 GOSUB *VIL_MSEL_M
  300. 21830 IF VIL_KN%>0 THEN ON VIL_KN% GOSUB *INTRO,*BAS,*VWM,*APPLY
  301. 21840 GOTO *MAINMENU
  302. 21850 '
  303. 21860 '<<<<<<<<<<<<<<<<<<<<  はじめに  >>>>>>>>>>>>>>>>>>>>
  304. 21870 *INTRO
  305. 21880 CLS
  306. 21890 VIL_WIN_X%=20:VIL_WIN_Y%=20:VIL_WIN_W%=VIL_WIN_X%+399:VIL_WIN_Z%=471
  307. 21900 VIL_VWM_AT%=0:VIL_VWM_T$="INTRO"
  308. 21910 GOSUB *VIL_VWM_OP
  309. 21920 SYMBOL(8,  8),"         ~ はじめに ~       ",1,1,6
  310. 21930 SYMBOL(8, 36)," VILはF-BASIC386上のプログラムで、",1,1,7
  311. 21940 SYMBOL(8, 56),"マルチウィンドウ表示・マウス入力などのユーザ・イ",1,1,7
  312. 21950 SYMBOL(8, 76),"ンタフェースを実現するサブルーチン集です。   ",1,1,7
  313. 21960 SYMBOL(8, 96)," このデモンストレーション・プログラムでは、以下",1,1,7
  314. 21970 SYMBOL(8,116),"の項目でその機能を説明します。         ",1,1,7
  315. 21980 SYMBOL(8,136)," 2.基本パッケージ              ",1,1,7
  316. 21990 SYMBOL(8,156),"  ウィンドウ、メニュー選択、文字列入力、      ",1,1,7
  317. 22000 SYMBOL(8,176),"  マルチグラフィック表示           ",1,1,7
  318. 22010 SYMBOL(8,196)," 3.ウィンドウマネージャ・パッケージ     ",1,1,7
  319. 22020 SYMBOL(8,216),"  移動、サイズ変更、スクロールバー      ",1,1,7
  320. 22030 SYMBOL(8,236)," 4.応用                   ",1,1,7
  321. 22040 SYMBOL(8,256),"  各パッケージの組み合わせによる応用例    ",1,1,7
  322. 22050 SYMBOL(8,436)," リターンキーかマウスの左ボタンを押してください ",1,1,6
  323. 22060 WAIT 50
  324. 22070 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
  325. 22080 GOSUB *VIL_VWM_CL
  326. 22090 RETURN
  327. 22100 '
  328. 22110 '<<<<<<<<<<<<<<<<<<<<  基本パッケージ  >>>>>>>>>>>>>>>>>>>>
  329. 22120 *BAS
  330. 22130 '
  331. 22140 CLS'SCREEN 0:CLS
  332. 22150 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
  333. 22160 LINE(0,0)-(639,479),PSET,4,BF
  334. 22170 FOR I=0 TO 30
  335. 22180   LINE(RND*639,RND*480)-(RND*639,RND*480),XOR,RND*6+1,BF
  336. 22190 NEXT
  337. 22200 '
  338. 22210 VIL_WIN_X%=30:VIL_WIN_Y%=50
  339. 22220 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  340. 22230 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  341. 22240 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  342. 22250 CLS
  343. 22260 SYMBOL(8,  8)," ~ VIL 基本パッケージ ~ ",1,1,6
  344. 22270 SYMBOL(8, 36),"基本パッケージは以下のパッケージ",1,1,7
  345. 22280 SYMBOL(8, 56),"から成っています。              ",1,1,7
  346. 22290 SYMBOL(8, 76),"・ブザー音パッケージ            ",1,1,7
  347. 22300 SYMBOL(8, 96),"・ウィンドウ・パッケージ        ",1,1,7
  348. 22310 SYMBOL(8,116),"・メニュー選択パッケージ        ",1,1,7
  349. 22320 SYMBOL(8,136),"・入力パッケージ                ",1,1,7
  350. 22330 '
  351. 22340 VIL_WIN_X%=50:VIL_WIN_Y%=240
  352. 22350 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
  353. 22360 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  354. 22370 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  355. 22380 CLS
  356. 22390 SYMBOL(8,  8),"ウィンドウ・パッケージでは",1,1,7
  357. 22400 SYMBOL(8, 28),"このように画面の矩形領域を",1,1,7
  358. 22410 SYMBOL(8, 48),"退避し、ウィンドウを開くこ",1,1,7
  359. 22420 SYMBOL(8, 68),"とができます。      ",1,1,7
  360. 22430 '
  361. 22440 VIL_WIN_X%=30:VIL_WIN_Y%=350
  362. 22450 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
  363. 22460 VIL_WIN_UB%=5:VIL_WIN_DB%=5:VIL_WIN_LB%=5:VIL_WIN_RB%=5
  364. 22470 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
  365. 22480 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-5)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,0,B
  366. 22490 LINE(VIL_WIN_X%-4,VIL_WIN_Y%-4)-(VIL_WIN_W%+4,VIL_WIN_Z%+4),PSET,7,BF
  367. 22500 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2),PSET,0,B
  368. 22510 LINE(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,0,B
  369. 22520 GOSUB *VIL_WIN_PMR
  370. 22530 SYMBOL(8,  8),"必要ならばユーザ・プログラムが",1,1,0
  371. 22540 SYMBOL(8, 28),"枠などを描画できます。    ",1,1,0
  372. 22550 '
  373. 22560 VIL_WIN_X%=360:VIL_WIN_Y%=40
  374. 22570 VIL_WIN_W%=VIL_WIN_X%+16*11+15:VIL_WIN_Z%=VIL_WIN_Y%+139
  375. 22580 VIL_WIN_UB%=2:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
  376. 22590 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
  377. 22600 DEF PEN 0,2
  378. 22610 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,1,B
  379. 22620 GOSUB *VIL_WIN_PMR
  380. 22630 CLS
  381. 22640 FOR I=1 TO 7
  382. 22650   CIRCLE(0,0),I*5,I
  383. 22660   CIRCLE(190,10),I*5,I
  384. 22670   SYMBOL(-60+I*8*6,120),"SAMPLE",1,1,I
  385. 22680 NEXT
  386. 22690 SYMBOL(8, 50),"ウィンドウ内への描画は",1,1,7
  387. 22700 SYMBOL(8, 70),"このようにクリッピング",1,1,7
  388. 22710 SYMBOL(8, 90),"させることが可能です。",1,1,7
  389. 22720 '
  390. 22730 PALETTE 4,[ 64, 64, 64]
  391. 22740 PALETTE 5,[128,  0,  0]
  392. 22750 RESTORE *WIN_DATA1
  393. 22760 FOR I=0 TO 2
  394. 22770   VIL_WIN_X%=320+I*24:VIL_WIN_Y%=240+I*48
  395. 22780   VIL_WIN_W%=VIL_WIN_X%+119:VIL_WIN_Z%=VIL_WIN_Y%+63
  396. 22790   VIL_WIN_UB%=16:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
  397. 22800   GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
  398. 22810   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+2,VIL_WIN_Y%- 2),PSET,%5,BF
  399. 22820   DEF PEN 0,2
  400. 22830   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+1,VIL_WIN_Z%+ 1),PSET,%4,B
  401. 22840   LINE(VIL_WIN_X%-2,VIL_WIN_Y%- 2)                                                -(VIL_WIN_W%+1,VIL_WIN_Y% -2),PSET,%4
  402. 22850   DEF PEN 0,1
  403. 22860   LINE(VIL_WIN_X%+1,VIL_WIN_Y%-13)                                                -(VIL_WIN_X%+9,VIL_WIN_Y%-4),PSET,%4,B
  404. 22870   CIRCLE(VIL_WIN_X%+5,VIL_WIN_Y%-8.6!),2,%1,1.5!,,,F
  405. 22880   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-9,VIL_WIN_Y%- 4),PSET,%4,B
  406. 22890   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-5,VIL_WIN_Y%- 8),PSET,%4,B
  407. 22900   SYMBOL(VIL_WIN_X%+13,VIL_WIN_Y%-11),"xterm",.5!,.5!,%4
  408. 22910   GOSUB *VIL_WIN_PMR
  409. 22920   CLS
  410. 22930   READ A$
  411. 22940   SYMBOL(8,8),A$,1,1,7
  412. 22950 NEXT
  413. 22960 '
  414. 22970 *WIN_DATA1
  415. 22980 DATA "ウィンドウの","重ね合わせも","このとおり"
  416. 22990 '
  417. 23000 RESTORE *WIN_DATA2
  418. 23010 GOSUB *VIL_WIN_PMA
  419. 23020 LINE(272,434)-(639,479),PSET,7,BF
  420. 23030 SYMBOL(280,440),"[RET]キー/マウスの左クリック/パッドの[A]で",1,1,0
  421. 23040 SYMBOL(280,460),"ウィンドウが1個ずつ閉じます。              ",1,1,0
  422. 23050 FOR I=1 TO 6 
  423. 23060   WHILE INKEY$=CHR$(13) OR MOUSE(3,0) OR PTRIG(1)=1:WEND
  424. 23070   WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND PTRIG(1)<>1:WEND
  425. 23080   READ VIL_WIN_UB%,VIL_WIN_DB%,VIL_WIN_LB%,VIL_WIN_RB%
  426. 23090   GOSUB *VIL_WIN_CL 
  427. 23100 NEXT
  428. 23110 '
  429. 23120 *WIN_DATA2
  430. 23130 DATA 16,2,2,2, 16,2,2,2, 16,2,2,2, 2,2,2,2, 5,5,5,5, 0,0,0,0
  431. 23140 '
  432. 23150 LINE(272,434)-(639,479),PSET,7,BF
  433. 23160 SYMBOL(280,440),"取消キー/マウスの右クリック/パッドの[B]で",1,1,0
  434. 23170 SYMBOL(280,460),"次に進みます。",1,1,0
  435. 23180 '
  436. 23190 VIL_WIN_X%=50:VIL_WIN_Y%=240
  437. 23200 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+148+16+7
  438. 23210 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  439. 23220 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  440. 23230 CLS
  441. 23240 SYMBOL(8,  8),"メニュー選択パッケージでは",1,1,7
  442. 23250 SYMBOL(8, 28),"・マウス         ",1,1,7
  443. 23260 SYMBOL(8, 48),"・パッド         ",1,1,7
  444. 23270 SYMBOL(8, 68),"・テンキー        ",1,1,7
  445. 23280 SYMBOL(8, 88),"・カ-ソルキー      ",1,1,7
  446. 23290 SYMBOL(8,108),"などを使用して、     ",1,1,7
  447. 23300 SYMBOL(8,128),"画面の矩形領域(ボックス)",1,1,7
  448. 23310 SYMBOL(8,148),"の一つを選択できます。  ",1,1,7
  449. 23320 '
  450. 23330 VIL_WIN_X%=320:VIL_WIN_Y%=40
  451. 23340 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+359
  452. 23350 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  453. 23360 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  454. 23370 '
  455. 23380 CLS
  456. 23390 SYMBOL(8,  8),"例えば下の数字の中から",1,1,7
  457. 23400 SYMBOL(8, 28),"一つ選択してみてください。",1,1,7
  458. 23410 FOR Y=0 TO 2
  459. 23420   FOR X=0 TO 2
  460. 23430     LINE(X*64+16,192-Y*64)-(X*64+63,192-Y*64+47),PSET,7,B
  461. 23440     SYMBOL(X*64+28,194-Y*64),FNVIL_I2S$(Y*3+X+1),3,3,7
  462. 23450   NEXT
  463. 23460 NEXT
  464. 23470 SYMBOL(16, 304),"選択→",1,1,7
  465. 23480 LINE(80,288)-(127,335),PSET,7,B
  466. 23490 '
  467. 23500 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
  468. 23510 '
  469. 23520 *MSEL_TENKEY1
  470. 23530 VIL_X%=12:VIL_Y%=188:VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+55
  471. 23540 VIL_XN%=3:VIL_YN%=3:VIL_XL%=64:VIL_YL%=64:VIL_MSEL_BD%=4:VIL_C%=10
  472. 23550 VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
  473. 23560 GOSUB *VIL_MSEL_M
  474. 23570 IF VIL_KN%>0 THEN
  475. 23580   LINE(81,289)-(126,334),PRESET,,BF
  476. 23590   SYMBOL(92,290),FNVIL_P2S$(VIL_KN%),3,3,6
  477. 23600 ENDIF
  478. 23610 IF VIL_KN%<>-1 THEN *MSEL_TENKEY1
  479. 23620 '
  480. 23630 *MSEL_TAU1
  481. 23640 CLS
  482. 23650 '
  483. 23660 ANS=INT(RND*64)+1
  484. 23670 FOR Y=0 TO 7
  485. 23680   FOR X=0 TO 7
  486. 23690     XA=RND*8:YA=RND*8
  487. 23700     SYMBOL(X*24+XA+64,Y*24+YA+64),                                                     KMID$("ΤT",2+(Y*8+X+1=ANS),1),1,1,RND*6+1
  488. 23710   NEXT
  489. 23720 NEXT
  490. 23730 SYMBOL(8,260)," ☆☆☆  「Τを探せ」ゲ-ム  ☆☆☆ ",1,1,6
  491. 23740 SYMBOL(8,280),"T(ティー)の中に一つだけ隠れている  ",1,1,4
  492. 23750 SYMBOL(8,300),"Τ(タウ)を見つけて選択してください。",1,1,4
  493. 23760 '
  494. 23770 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
  495. 23780 '
  496. 23790 *MSEL_TAU2
  497. 23800 VIL_X%=64:VIL_Y%=64:VIL_W%=VIL_X%+23:VIL_Z%=VIL_Y%+23
  498. 23810 VIL_XL%=24:VIL_YL%=24:VIL_XN%=8:VIL_YN%=8:VIL_MSEL_BD%=0:VIL_C%=15
  499. 23820 VIL_MSEL_BB%=1:VIL_MSEL_BE%=64
  500. 23830 GOSUB *VIL_MSEL_M
  501. 23840 IF VIL_KN%>0 THEN 
  502. 23850   IF VIL_KN%=ANS THEN
  503. 23860     LINE(80,320)-(239,335),PRESET,,BF
  504. 23870     SYMBOL(80,320),"☆☆☆ 正解! ☆☆☆",1,1,6
  505. 23880     GOSUB *VIL_BEEP_G
  506. 23890     GOTO *MSEL_TAU1
  507. 23900   ELSE
  508. 23910     LINE(80,320)-(239,335),PRESET,,BF
  509. 23920     SYMBOL(80,320),"××× はずれ ×××",1,1,2
  510. 23930     GOSUB *VIL_BEEP_B
  511. 23940   ENDIF
  512. 23950 ENDIF
  513. 23960 IF VIL_KN%<>-1 THEN *MSEL_TAU2
  514. 23970 '
  515. 23980 *MSEL_ADV1
  516. 23990 CLS
  517. 24000 '
  518. 24010 LINE(4,  4)-(299,295),PSET,4,B
  519. 24020 LINE(8, 30)-(295,229),PSET,4,B
  520. 24030 LINE(8,234)-(295,261),PSET,4,B
  521. 24040 SYMBOL(104,10),"MYSTIC HOUSE",1,1,4
  522. 24050 SYMBOL(16,238),"見る   取る   動かす たたく 終わる",1,1,4
  523. 24060 SYMBOL(8,302)," ↑ アドベンチャーゲームなどにも",1,1,7
  524. 24070 SYMBOL(8,322),"   利用できます。",1,1,7
  525. 24080 RESTORE *MSEL_DATA1
  526. 24090 FOR I=0 TO 17
  527. 24100   READ K,X,Y:LINE(X,Y)-(X,Y),PSET,4
  528. 24110   FOR J=2 TO K:READ X,Y:LINE -(X,Y),PSET,4:NEXT
  529. 24120 NEXT
  530. 24130 '
  531. 24140 *MSEL_DATA1
  532. 24150 DATA 4,  48, 30,  48,110, 255,110, 255, 30
  533. 24160 DATA 2,  48,110,   8,229
  534. 24170 DATA 2, 255,110, 295,229
  535. 24180 DATA 4,  70,110,  70, 35, 110, 35, 110,110
  536. 24190 DATA 5,  74, 70,  74, 73,  77, 73,  77, 70,  74, 70
  537. 24200 DATA 5, 130,130, 120,160, 210,160, 200,130, 130,130
  538. 24210 DATA 4, 120,160, 120,170, 210,170, 210,160
  539. 24220 DATA 4, 135,170, 125,210, 130,210, 140,170
  540. 24230 DATA 4, 195,170, 205,210, 200,210, 190,170
  541. 24240 DATA 5, 265, 40, 265, 80, 280,130, 280, 90, 265, 40
  542. 24250 DATA 5, 160, 45, 160, 80, 200, 80, 200, 45, 160, 45
  543. 24260 DATA 5, 170, 50, 173, 74, 187, 70, 188, 52, 170, 50
  544. 24270 DATA 2, 174, 56, 177, 55
  545. 24280 DATA 2, 182, 56, 185, 58
  546. 24290 DATA 2, 180, 57, 178, 62
  547. 24300 DATA 2, 176, 70, 181, 67
  548. 24310 DATA 5,  65,127,  65,122, 70,127,  65,127, 58,134
  549. 24320 DATA 2,  61,131,  63,134
  550. 24330 '
  551. 24340 VIL_MSEL_BN%=1:VIL_MSEL_BC%=0
  552. 24350 '
  553. 24360 *MSEL_ADV2
  554. 24370 VIL_X%=14:VIL_Y%=236:VIL_W%=VIL_X%+51:VIL_Z%=VIL_Y%+23
  555. 24380 VIL_XN%=5:VIL_YN%=1:VIL_XL%=56:VIL_MSEL_BD%=0:VIL_C%=15
  556. 24390 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5:VIL_MSEL_MN%=101
  557. 24400 GOSUB *VIL_MSEL_M
  558. 24410 IF VIL_KN%>0 THEN
  559. 24420   VIL_X%=8:VIL_Y%=265:VIL_L%=36:VIL_C%=12
  560. 24430   VIL_A$=KMID$("見る 取る 動かすたたく終わる",VIL_KN%*3-2,3)
  561. 24440   GOSUB *VIL_INP_GPRINT
  562. 24450   IF VIL_KN%=5 THEN *MSEL_CNFM1
  563. 24460   VERB=VIL_KN%
  564. 24470 '
  565. 24480   RESTORE *MSEL_DATA2
  566. 24490   FOR I=1 TO 5
  567. 24500     READ VIL_MSEL_X%(I),VIL_MSEL_Y%(I),VIL_MSEL_W%(I),VIL_MSEL_Z%(I)
  568. 24510   NEXT
  569. 24520   VIL_XN%=5:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15
  570. 24530   VIL_MSEL_MN%=102:VIL_MSEL_BC%=0
  571. 24540   VIL_MSEL_BB%=1:VIL_MSEL_BE%=5
  572. 24550 *MSEL_ADV3
  573. 24560   GOSUB *VIL_MSEL_IN
  574. 24570   GOSUB *VIL_MSEL_BC
  575. 24580   IF VIL_KN%<1 THEN *MSEL_ADV3
  576. 24590 '
  577. 24600 *MSEL_DATA2
  578. 24610   DATA  68, 33,112,112
  579. 24620   DATA 158, 43,202, 82 
  580. 24630   DATA 263, 38,282,132
  581. 24640   DATA  56,120, 72,136
  582. 24650   DATA 118,128,212,212
  583. 24660 '
  584. 24670   RESTORE *MSEL_DATA3:FOR I=1 TO VIL_KN%:READ VIL_A$:NEXT
  585. 24680 '
  586. 24690 *MSEL_DATA3
  587. 24700   DATA ドア,肖像画,窓,鍵,テーブル
  588. 24710 '
  589. 24720   VIL_X%=64:VIL_Y%=265:VIL_L%=8:VIL_C%=12:VIL_CB%=0
  590. 24730   GOSUB *VIL_INP_GPRINT
  591. 24740 '
  592. 24750   RESTORE *MSEL_DATA4
  593. 24760   FOR I=1 TO VERB
  594. 24770     IF I=VERB THEN
  595. 24780       FOR J=1 TO VIL_KN%:READ VIL_A$:NEXT
  596. 24790     ELSE
  597. 24800       FOR J=1 TO 5:READ VIL_A$:NEXT
  598. 24810     ENDIF
  599. 24820   NEXT
  600. 24830 '
  601. 24840 *MSEL_DATA4
  602. 24850   DATA "閉まっている   ","見覚えのない顔だ ","外は晴れている  "
  603. 24860   DATA "黄金の鍵だ    ","埃が積もっている "
  604. 24870   DATA "取れるわけがない ","使い道はなさそうだ","取れるわけがない "
  605. 24880   DATA "何故か取れない  ","重くて持てない  "
  606. 24890   DATA "鍵が掛かっている ","ネジ止めされている","錆びついている  "
  607. 24900   DATA "何故か動かない  ","疲れるからいやだ "
  608. 24910   DATA "トントン     ","手が痛いからいやだ","叩いても開かない "
  609. 24920   DATA "叩いてどーする  ","ドンドン     "
  610. 24930 '
  611. 24940   VIL_X%=136:VIL_Y%=265:VIL_L%=20:VIL_C%=12:VIL_CB%=0
  612. 24950   VIL_A$=": "+VIL_A$
  613. 24960   GOSUB *VIL_INP_GPRINT
  614. 24970 ENDIF
  615. 24980 GOTO *MSEL_ADV2
  616. 24990 '
  617. 25000 *MSEL_CNFM1
  618. 25010 MAXTURN=50
  619. 25020 RESTORE *MSEL_DATA5
  620. 25030 FOR I=1 TO 8
  621. 25040   READ J:VIL_MSEL_BN%(105+I)=J
  622. 25050 NEXT
  623. 25060 '
  624. 25070 *MSEL_DATA5
  625. 25080 DATA 2,1,1,2,2,4,1,1
  626. 25090 '
  627. 25100 *MSEL_CNFM2
  628. 25110 CLS
  629. 25120 SYMBOL(16,  8)," ☆☆☆☆☆ 設 定 ☆☆☆☆☆ ",1,1,6
  630. 25130 SYMBOL(16, 36),"表示       英語    日本語  ",1,1,7
  631. 25140 SYMBOL(16, 60),"BGM      ON      OFF  ",1,1,7
  632. 25150 SYMBOL(16, 84),"効果音   ON    OFF  ",1,1,7
  633. 25160 SYMBOL(16,108),"ヒント      あり      なし   ",1,1,7
  634. 25170 SYMBOL(16,132),"難易度      初級 中級 上級   ",1,1,7
  635. 25180 SYMBOL(16,156),"表示速度  0 1 2 3 4 5",1,1,7
  636. 25190 SYMBOL(16,180),"最大ターン (00)  ←    →  (99)",1,1,7
  637. 25200 SYMBOL(16,212),"    ~ 決定 取消 ~    ",1,1,7
  638. 25210 SYMBOL(16,276)," ↑ 設定メニューも実現できます。",1,1,5
  639. 25220 GOSUB *PRINT_TURN
  640. 25230 '
  641. 25240 VIL_MSEL_BC%=0:VIL_VWM_R%=0
  642. 25250 VIL_C%=15:VIL_CC%=7
  643. 25260 VIL_MSEL_CMN%=105:VIL_MSEL_CMR%=8
  644. 25270 VIL_MSEL_BN%(VIL_MSEL_CMN%)=1 'カーソル位置を第一行に設定
  645. 25280 GOSUB *VIL_MSEL_CNFSV
  646. 25290 MAXTURN_OLD=MAXTURN
  647. 25300 '
  648. 25310 RESTORE *MSEL_DATA6
  649. 25320 FOR I=1 TO 8
  650. 25330   READ VIL_MSEL_CX%(I),VIL_MSEL_CY%(I)
  651. 25340   READ W,Z
  652. 25350     VIL_MSEL_CW%(I)=VIL_MSEL_CX%(I)+W
  653. 25360     VIL_MSEL_CZ%(I)=VIL_MSEL_CY%(I)+Z
  654. 25370   READ VIL_MSEL_CL%(I)
  655. 25380   READ VIL_MSEL_CN%(I),VIL_MSEL_CBB%(I),VIL_MSEL_CBE%(I)
  656. 25390 NEXT
  657. 25400 '
  658. 25410 *MSEL_DATA6
  659. 25420 DATA 108, 34, 51, 19,  96,  2,1,2
  660. 25430 DATA 108, 58, 51, 19,  96,  2,1,2
  661. 25440 DATA 108, 82, 51, 19,  96,  2,1,2
  662. 25450 DATA 108,106, 51, 19,  96,  2,1,2
  663. 25460 DATA 108,130, 35, 19,  48,  3,1,3
  664. 25470 DATA 108,154, 19, 19,  32,  6,0,5
  665. 25480 DATA 108,178, 35, 19, 144,  2,1,2
  666. 25490 DATA 108,210, 35, 19,  48,  2,1,2
  667. 25500 '
  668. 25510 ENDF=0
  669. 25520 WHILE ENDF=0
  670. 25530   GOSUB *VIL_MSEL_CNFM
  671. 25540   IF VIL_MSEL_CR%=7 AND VIL_KN%>0 THEN
  672. 25550     MAXTURN=MAXTURN-(VIL_KN%=1)*(MAXTURN>0)+(VIL_KN%=2)*(MAXTURN<99)
  673. 25560     GOSUB *PRINT_TURN
  674. 25570   ELSE IF VIL_MSEL_CR%=8 THEN
  675. 25580     ENDF=-1
  676. 25590     IF VIL_KN%=2 THEN GOSUB *VIL_MSEL_CNFLD:MAXTURN=MAXTURN_OLD
  677. 25600 '                    設定を取消
  678. 25610   ENDIF
  679. 25620 WEND
  680. 25630 '
  681. 25640 *MSEL_CNFM3
  682. 25650 SYMBOL(16,304),"    もう一度やりますか?    ",1,1,7
  683. 25660 VIL_X%=92:VIL_Y%=334:VIL_MSEL_BN%=1:VIL_C%=15
  684. 25670 GOSUB *VIL_SEL_YN
  685. 25680 SYMBOL(16,304),"                 ",1,1,7
  686. 25690 IF VIL_KN%=1 THEN *MSEL_CNFM2                                                             ELSE IF VIL_KN%=2 THEN *INP ELSE *MSEL_CNFM3
  687. 25700 '
  688. 25710 *PRINT_TURN
  689. 25720 VIL_X%=192:VIL_Y%=180:VIL_L%=2:VIL_C%=15:VIL_CB%=0
  690. 25730 VIL_A$=FNVIL_P2S0$(MAXTURN,2)
  691. 25740 GOSUB *VIL_INP_GPRINT
  692. 25750 RETURN
  693. 25760 '
  694. 25770 *INP
  695. 25780 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CL:GOSUB *VIL_WIN_CL
  696. 25790 '
  697. 25800 LINE(272,434)-(639,479),PSET,4,BF
  698. 25810 VIL_WIN_X%=16:VIL_WIN_Y%=240
  699. 25820 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
  700. 25830 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  701. 25840 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  702. 25850 CLS
  703. 25860 SYMBOL(8,  8),"入力パッケージでは、     ",1,1,7
  704. 25870 SYMBOL(8, 28),"・入力文字列の最大長を指定可能",1,1,7
  705. 25880 SYMBOL(8, 48),"・日本語入力が可能      ",1,1,7
  706. 25890 SYMBOL(8, 68),"・ヒストリ呼び出しが可能     ",1,1,7
  707. 25900 '
  708. 25910 VIL_WIN_X%=320:VIL_WIN_Y%=8
  709. 25920 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+376+16+7
  710. 25930 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  711. 25940 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
  712. 25950 NAM$="":TIM$=""
  713. 25960 '
  714. 25970 *INP_NAME1
  715. 25980 CLS:GOSUB *VIL_INP_FEPON
  716. 25990 SYMBOL(8,  8),"***** 使用可能キー *****",1,1,6
  717. 26000 SYMBOL(8, 28),"[RET]   : 決定           ",1,1,7
  718. 26010 SYMBOL(8, 48),"[取消]  : 取消           ",1,1,7
  719. 26020 SYMBOL(8, 68),"← →  : カーソル移動       ",1,1,7
  720. 26030 SYMBOL(8, 88),"[BS]    : カーソル位置の左1文字削除",1,1,7
  721. 26040 SYMBOL(8,108),"[削除]  : カーソル位置1文字削除  ",1,1,7
  722. 26050 SYMBOL(8,128),"[HOME]  : クリア          ",1,1,7
  723. 26060 SYMBOL(8,148),"↑↓    : ヒストリー呼び出し     ",1,1,7
  724. 26070 SYMBOL(8,168),"マウス左/右 : [決定]/[取消]と等価  ",1,1,7
  725. 26080 SYMBOL(8,188),"パッドA/B : [決定]/[取消]と等価  ",1,1,7
  726. 26090 SYMBOL(8,208),"方向ボタン  : カーソルキーと等価  ",1,1,7
  727. 26100 SYMBOL(8,228),"*****   使用例   *****",1,1,6
  728. 26110 '
  729. 26120 SYMBOL(8,248),"あなたの名前を入力してください。  ",1,1,7
  730. 26130 SYMBOL(8,268),"(半角16文字以内) :         ",1,1,7
  731. 26140 '
  732. 26150 *INP_NAME2
  733. 26160 VIL_X%=8+16*9:VIL_Y%=268:VIL_L%=16:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'NAM$
  734. 26170 VIL_INP_HSN%=1
  735. 26180 GOSUB *VIL_INP_STR
  736. 26190 IF VIL_KN%=-1 OR VIL_A$="" THEN *INP_NAME2
  737. 26200 NAM$=VIL_A$
  738. 26210 '
  739. 26220 SYMBOL(8,288),"現在時刻を入力してください。    ",1,1,7
  740. 26230 SYMBOL(8,308),"(00:00~23:59)   :         ",1,1,7
  741. 26240 '
  742. 26250 *INP_NAME3
  743. 26260 VIL_INP_HSN%=2
  744. 26270 VIL_X%=8+16*9:VIL_Y%=308:VIL_L%=5:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'TIM$
  745. 26280 GOSUB *VIL_INP_STR
  746. 26290 IF VIL_KN%=-1 OR VIL_A$="" THEN *INP_NAME3
  747. 26300 TIM$=VIL_A$
  748. 26310 IF LEN(VIL_A$)<>5 OR MID$(VIL_A$,3,1)<>":"                                     THEN GOSUB *VIL_BEEP_B:GOTO *INP_NAME3
  749. 26320 HOUR=VAL(LEFT$(VIL_A$,2)):MINUTE=VAL(MID$(VIL_A$,4,2))
  750. 26330 IF HOUR<0 OR 23<HOUR OR MINUTE<0 OR 59<MINUTE THEN
  751. 26340   GOSUB *VIL_BEEP_B:GOTO *INP_NAME3
  752. 26350 ENDIF
  753. 26360 IF 6<=HOUR AND HOUR<=11 THEN
  754. 26370   A$="おはよう。"
  755. 26380 ELSE IF 12=<HOUR AND HOUR<=18 THEN
  756. 26390   A$="こんにちは。"
  757. 26400 ELSE
  758. 26410   A$="こんばんは。"
  759. 26420 ENDIF
  760. 26430 '
  761. 26440 GOSUB *VIL_INP_FEPOFF
  762. 26450 SYMBOL(8,328),"現在"+FNVIL_P2S$(HOUR)+"時"+FNVIL_P2S$(MINUTE)+"分。"                      ,1,1,4
  763. 26460 SYMBOL(8,348),NAM$+"さん、"+A$,1,1,4
  764. 26470 *INP_NAME4
  765. 26480 SYMBOL(8,376),"もう一度やる?",1,1,7
  766. 26490 VIL_MSEL_BN%=1
  767. 26500 VIL_X%=132:VIL_Y%=372
  768. 26510 GOSUB *VIL_SEL_YN
  769. 26520 IF VIL_KN%<1 THEN *INP_NAME4
  770. 26530 IF VIL_KN%=1 THEN *INP_NAME1
  771. 26540 '
  772. 26550 'SCREEN 1,0
  773. 26560 RETURN
  774. 26570 '
  775. 26580 '<<<<<<<<<<<<<<<<<<<<  ウィンドウマネージャ  >>>>>>>>>>>>>>>>>>>>
  776. 26590 *VWM
  777. 26600 CLS'SCREEN 1,0:CLS
  778. 26610 VIL_VWM_N%=0
  779. 26620 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
  780. 26630                                               'ウィンドウ枠幅設定
  781. 26640 PALETTE 7,[255,255,255]  'パレット(8 XOR 15)を白にする
  782. 26650 PALETTE 5,[80,80,0]
  783. 26660 FOR Y=0 TO 479 STEP 16
  784. 26670   FOR X=0 TO 639 STEP 8*7
  785. 26680     SYMBOL(X,Y),"VIL ",1,1,%5,,NOT
  786. 26690   NEXT
  787. 26700 NEXT
  788. 26710 '
  789. 26720 VIL_WIN_X%=100                :VIL_WIN_Y%=40
  790. 26730 VIL_WIN_W%=VIL_WIN_X%+16*19+15:VIL_WIN_Z%=VIL_WIN_Y%+8+16+7
  791. 26740 VIL_VWM_T$="VWM":VIL_VWM_AT%=0
  792. 26750 GOSUB *VIL_VWM_OP
  793. 26760 SYMBOL(  8,  8),"~ ウィンドウマネージャ・パッケージ ~",1,1,6
  794. 26770 '
  795. 26780 GOSUB *VIL_WIN_PMA
  796. 26790 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
  797. 26800 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  798. 26810 VIL_VWM_T$="MOVE":VIL_VWM_AT%=8
  799. 26820 GOSUB *VIL_VWM_OP
  800. 26830 SYMBOL(  8,  8),"   ~ ウィンドウ移動 ~   ",1,1,6
  801. 26840 SYMBOL(  8, 36)," MOVE 属性をもつウィンドウは、上",1,1,7
  802. 26850 SYMBOL(  8, 56),"部のタイトルバーにマウスカーソル",1,1,7
  803. 26860 SYMBOL(  8, 76),"を合わせて左ボタンを押すと、ドラ",1,1,7
  804. 26870 SYMBOL(  8, 96),"ッグで動かすことができます。  ",1,1,7
  805. 26880 SYMBOL(  8,136),"       納得した。→   ",1,1,7
  806. 26890 '
  807. 26900 VIL_KN%=0
  808. 26910 WHILE VIL_KN%<>1
  809. 26920   VIL_X%=228:VIL_Y%=132
  810. 26930   GOSUB *VIL_SEL_OK
  811. 26940   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
  812. 26950 WEND
  813. 26960 '
  814. 26970 VIL_WIN_X%=60                 :VIL_WIN_Y%=122
  815. 26980 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+116+16+7
  816. 26990 VIL_VWM_T$="CLOSE 0":VIL_VWM_AT%=0
  817. 27000 GOSUB *VIL_VWM_OP
  818. 27010 SYMBOL(8, 8)," ~ ウィンドウ・クローズ ~ ",1,1,6
  819. 27020 SYMBOL(8,36),"CLOSE 属性をもつウィンドウは、",1,1,7
  820. 27030 SYMBOL(8,56),"左上隅の スイッチをクリックす",1,1,7
  821. 27040 SYMBOL(8,76),"ると、閉じることができます。 ",1,1,7
  822. 27050 LINE(75,60)-(84,69),PSET,7,B
  823. 27060 LINE(75,60)-(84,69),PSET,7
  824. 27070 LINE(75,69)-(84,60),PSET,7
  825. 27080 '
  826. 27090 *VWM_CL0
  827. 27100 '
  828. 27110 VIL_WIN_X%=160                :VIL_WIN_Y%=250
  829. 27120 VIL_WIN_W%=VIL_WIN_X%+16*12+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
  830. 27130 VIL_VWM_T$="CLOSE 1":VIL_VWM_AT%=2
  831. 27140 GOSUB *VIL_VWM_OP
  832. 27150 SYMBOL(8, 8),"例えば、このウィンドウを",1,1,7
  833. 27160 SYMBOL(8,28),"閉じてみてください。  ",1,1,7
  834. 27170 '
  835. 27180 VIL_VWM_R%=0
  836. 27190 WHILE VIL_VWM_R%<>2
  837. 27200   MOUSE 1,,,1
  838. 27210   WHILE MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
  839. 27220   VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  840. 27230   MOUSE 1,,,0
  841. 27240   GOSUB *VIL_VWM_WIN
  842. 27250 WEND
  843. 27260 '
  844. 27270 WHILE INKEY$<>"":WEND
  845. 27280 SYMBOL(8,116),"もう一度やる?",1,1,7
  846. 27290 '
  847. 27300 *VWM_CL1
  848. 27310 '
  849. 27320 'VIL_KN%=0
  850. 27330 VIL_X%=132:VIL_Y%=112
  851. 27340 GOSUB *VIL_SEL_YN
  852. 27350 IF VIL_KN%<1 THEN *VWM_CL1
  853. 27360 IF VIL_KN%=1 THEN *VWM_CL0
  854. 27370 '
  855. 27380 VIL_WIN_X%=100                :VIL_WIN_Y%=164
  856. 27390 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  857. 27400 VIL_VWM_T$="HIDE":VIL_VWM_AT%=4
  858. 27410 GOSUB *VIL_VWM_OP
  859. 27420 SYMBOL(8,  8)," ~ ウィンドウ一時消去 ~ ",1,1,6
  860. 27430 SYMBOL(8, 36)," HIDE 属性をもつウィンドウは、",1,1,7
  861. 27440 SYMBOL(8, 56),"左上隅の スイッチをクリックす",1,1,7
  862. 27450 SYMBOL(8, 76),"ると、左ボタンを押している間、",1,1,7
  863. 27460 SYMBOL(8, 96),"一時的に閉じることができます。",1,1,7
  864. 27470 SYMBOL(8,136),"  納得したら  →      ",1,1,7
  865. 27480 LINE(75,60)-(84,69),PSET,7,B
  866. 27490 LINE(75,69)-(84,60),PSET,7
  867. 27500 '
  868. 27510 VIL_KN%=0
  869. 27520 WHILE VIL_KN% <> 1
  870. 27530   VIL_X%=212:VIL_Y%=132
  871. 27540   GOSUB *VIL_SEL_OK
  872. 27550   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
  873. 27560 WEND
  874. 27570 '
  875. 27580 *VWM_RESIZE0
  876. 27590 VIL_WIN_X%=140                :VIL_WIN_Y%=206
  877. 27600 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
  878. 27610 VIL_VWM_T$="RESIZE":VIL_VWM_AT%=16
  879. 27620 GOSUB *VIL_VWM_OP
  880. 27630 *VWM_RESIZE1
  881. 27640 SYMBOL(8,  8)," ~ ウィンドウ・サイズ変更 ~ ",1,1,6
  882. 27650 SYMBOL(8, 36)," RESIZE 属性をもつウィンドウは、",1,1,7
  883. 27660 SYMBOL(8, 56),"右上隅の スイッチにマウスカーソ",1,1,7
  884. 27670 SYMBOL(8, 76),"ルを合わせて左ボタンを押すと、ド",1,1,7
  885. 27680 SYMBOL(8, 96),"ラッグで大きさを変えることができ",1,1,7
  886. 27690 SYMBOL(8,116),"ます。                          ",1,1,7
  887. 27700 SYMBOL(8,136),"  納得したら  →       ",1,1,7
  888. 27710 LINE(75,60)-(84,69),PSET,7,B
  889. 27720 LINE(75,64)-(80,69),PSET,7,B
  890. 27730 *VWM_RESIZE2
  891. 27740 'VIL_KN%=0
  892. 27750 VIL_X%=212:VIL_Y%=132
  893. 27760 GOSUB *VIL_SEL_OK
  894. 27770 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN:                                        IF VIL_VWM_R%=16 THEN *VWM_RESIZE1
  895. 27780 IF VIL_KN%<>1 THEN *VWM_RESIZE2
  896. 27790 '
  897. 27800 *VWM_YSCRLBAR_0
  898. 27810 VIL_WIN_X%=100                :VIL_WIN_Y%=100
  899. 27820 VIL_WIN_W%=VIL_WIN_X%+16*20+15:VIL_WIN_Z%=VIL_WIN_Y%+20*16+15
  900. 27830 VIL_VWM_T$="Y SCROLL BAR":VIL_VWM_AT%=2+8192
  901. 27840 VIL_VWM_YLBL%=52:VIL_VWM_YLIL%=16:VIL_VWM_YLIP%=0:VIL_VWM_YLPL%=16
  902. 27850 GOSUB *VIL_VWM_OP
  903. 27860 MOUSE 1,,,1:VIL_VWM_R%=0
  904. 27870 WHILE VIL_VWM_R%<>2
  905. 27880   VIL_VWM_R%=0
  906. 27890   IF VIL_SBAR_R%=1 THEN '一行UP
  907. 27900     GET@A(0,  0)-(16*20+15,20*16+15),VIL_WIN_BF%,                                                                 VIL_WIN_BFO&(VIL_WIN_AN%)
  908. 27910     PUT@A(0, 20)-(16*20+15,20*16+35),VIL_WIN_BF%,,,,,                                                             VIL_WIN_BFO&(VIL_WIN_AN%)
  909. 27920     LINE(0,0)-(16*20+15,19),PSET,%VIL_VWM_CB%,BF
  910. 27930     SYMBOL(8,8),TXTBUF$(VIL_VWM_YLIP%),1,1,7
  911. 27940   ELSE IF VIL_SBAR_R%=5 THEN '一行DOWN
  912. 27950     GET@A(0,  0)-(16*20+15,20*16+15),VIL_WIN_BF%,                                                                 VIL_WIN_BFO&(VIL_WIN_AN%)
  913. 27960     PUT@A(0,-20)-(16*20+15,20*16- 5),VIL_WIN_BF%,,,,,                                                             VIL_WIN_BFO&(VIL_WIN_AN%)
  914. 27970     LINE(0,20*15+8)-(16*20+15,20*16+15),PSET,%VIL_VWM_CB%,BF
  915. 27980     SYMBOL(8,20*15+8),TXTBUF$(VIL_VWM_YLIP%+15),1,1,7
  916. 27990   ELSE 
  917. 28000     GOSUB *VIL_VWM_CLS
  918. 28010     FOR I=0 TO 15
  919. 28020       SYMBOL(8,I*20+8),TXTBUF$(VIL_VWM_YLIP%+I),1,1,7
  920. 28030     NEXT
  921. 28040   ENDIF
  922. 28050   VIL_X%=-1:VIL_Y%=-1:VIL_W%=VIL_X%:VIL_Z%=VIL_Y%
  923. 28060   VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
  924. 28070   VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
  925. 28080   WHILE VIL_VWM_R%<>8192 AND VIL_VWM_R%<>2
  926. 28090     GOSUB *VIL_MSEL_M
  927. 28100     GOSUB *VIL_VWM_CHECK
  928. 28110   WEND
  929. 28120 WEND
  930. 28130 '
  931. 28140 *VWM_XSCRLBAR_0
  932. 28150 VIL_WIN_X%=160                :VIL_WIN_Y%=160
  933. 28160 VIL_WIN_W%=VIL_WIN_X%+79:VIL_WIN_Z%=VIL_WIN_Y%+79
  934. 28170 VIL_VWM_T$="X-Y":VIL_VWM_AT%=2+4096+8192
  935. 28180 VIL_VWM_XLBL%=320:VIL_VWM_XLIL%=80:VIL_VWM_XLIP%=0:VIL_VWM_XLPL%=40
  936. 28190 VIL_VWM_YLBL%=320:VIL_VWM_YLIL%=80:VIL_VWM_YLIP%=0:VIL_VWM_YLPL%=40
  937. 28200 GOSUB *VIL_VWM_OP:CLS
  938. 28210 MOUSE 1,,,1:VIL_VWM_R%=0
  939. 28220 WHILE VIL_VWM_R%<>2
  940. 28230   VIL_VWM_R%=0
  941. 28240   VIL_MG_GN%=20
  942. 28250   VIL_MG_X%=-VIL_VWM_XLIP%
  943. 28260   VIL_MG_Y%=-VIL_VWM_YLIP%
  944. 28270   GOSUB *VIL_MG_PUTG
  945. 28280   VIL_X%=-1:VIL_Y%=-1:VIL_W%=VIL_X%:VIL_Z%=VIL_Y%
  946. 28290   VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
  947. 28300   VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
  948. 28310   WHILE VIL_VWM_R%<>4096 AND VIL_VWM_R%<>8192 AND VIL_VWM_R%<>2
  949. 28320     GOSUB *VIL_MSEL_M
  950. 28330     GOSUB *VIL_VWM_CHECK
  951. 28340   WEND
  952. 28350 WEND
  953. 28360 'SCREEN 1,1:CLS:SCREEN 1,0
  954. 28370 '
  955. 28380 FOR I=1 TO 4:GOSUB *VIL_VWM_CL:NEXT
  956. 28390 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
  957. 28400 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+218+16+7
  958. 28410 VIL_VWM_T$="ALL 0":VIL_VWM_AT%=0
  959. 28420 GOSUB *VIL_VWM_OP
  960. 28430 SYMBOL(8,  8)," 最後の例として、全属性を指定したウ",1,1,7
  961. 28440 SYMBOL(8, 28),"ィンドウを右に挙げます。いろいろ試し",1,1,7
  962. 28450 SYMBOL(8, 48),"てみてください。          ",1,1,7
  963. 28460 SYMBOL(8, 68)," なお、このウィンドウは      ",1,1,7
  964. 28470 SYMBOL(8, 88),"・移動範囲   : (120,40)-(599,439) ",1,1,4
  965. 28480 SYMBOL(8,108),"・最大サイズ  : 328×248ドット   ",1,1,4
  966. 28490 SYMBOL(8,128),"・最小サイズ  : 136× 72ドット   ",1,1,4
  967. 28500 SYMBOL(8,148),"・移動単位   : X・Y方向共 8ドット ",1,1,4
  968. 28510 SYMBOL(8,168),"・リサイズ単位 : X・Y方向共16ドット ",1,1,4
  969. 28520 SYMBOL(8,188),"となっています。          ",1,1,7
  970. 28530 '
  971. 28540 *VWM_ALL_0
  972. 28550 VIL_WIN_X%=320           :VIL_WIN_Y%=120
  973. 28560 VIL_WIN_W%=VIL_WIN_X%+167:VIL_WIN_Z%=VIL_WIN_Y%+119
  974. 28570 VIL_VWM_T$="ALL 1":VIL_VWM_AT%=1+2+4+8+16
  975. 28580 GOSUB *VIL_VWM_OP
  976. 28590 *VWM_ALL_1
  977. 28600 GOSUB *VWM_ALL_9
  978. 28610 VIL_VWM_XM%=120       '移動/リサイズ時ウィンドウ左上隅座標最小値
  979. 28620 VIL_VWM_YM%= 40
  980. 28630 VIL_VWM_WM%=599       '移動/リサイズ時ウィンドウ右下隅座標最大値
  981. 28640 VIL_VWM_ZM%=439
  982. 28650 VIL_VWM_XL%=136       'リサイズ時のX・Y方向長さ最小値
  983. 28660 VIL_VWM_YL%= 72
  984. 28670 VIL_VWM_WL%=328       'リサイズ時のX・Y方向長さ最大値
  985. 28680 VIL_VWM_ZL%=248
  986. 28690 VIL_VWM_XD%=  8       '移動時の単位ドット数
  987. 28700 VIL_VWM_YD%=  8
  988. 28710 VIL_VWM_WD%= 16       'リサイズ時の単位ドット数
  989. 28720 VIL_VWM_ZD%= 16
  990. 28730 '
  991. 28740 MOUSE 1,,,1:VIL_VWM_R%=0
  992. 28750 WHILE VIL_VWM_R%<>2
  993. 28760   VIL_X%=8:VIL_Y%=8:VIL_W%=VIL_X%+7:VIL_Z%=VIL_Y%+7
  994. 28770   VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
  995. 28780   VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
  996. 28790   GOSUB *VIL_MSEL_M
  997. 28800   GOSUB *VIL_VWM_CHECK
  998. 28810   IF VIL_VWM_R% AND VIL_VWM_R%<>2 THEN GOSUB *VWM_ALL_1
  999. 28820 WEND
  1000. 28830 '
  1001. 28840 *VWM_ALL_2
  1002. 28850 SYMBOL(8,218),"もう一度やる?",1,1,7
  1003. 28860 VIL_KN%=0
  1004. 28870 VIL_X%=132:VIL_Y%=218
  1005. 28880 GOSUB *VIL_SEL_YN
  1006. 28890 IF VIL_KN%<1 THEN *VWM_ALL_2
  1007. 28900 IF VIL_KN%=1 THEN *VWM_ALL_0
  1008. 28910 '
  1009. 28920 VIL_VWM_XM%=  8       '移動/リサイズ時ウィンドウ左上隅座標最小値
  1010. 28930 VIL_VWM_YM%= 14
  1011. 28940 VIL_VWM_WM%=631       '移動/リサイズ時ウィンドウ右下隅座標最大値
  1012. 28950 VIL_VWM_ZM%=471
  1013. 28960 VIL_VWM_XL%= 32       'リサイズ時のX・Y方向長さ最小値
  1014. 28970 VIL_VWM_YL%=  8
  1015. 28980 VIL_VWM_WL%=624       'リサイズ時のX・Y方向長さ最大値
  1016. 28990 VIL_VWM_ZL%=458
  1017. 29000 VIL_VWM_XD%=  1       '移動時の単位ドット数
  1018. 29010 VIL_VWM_YD%=  1
  1019. 29020 VIL_VWM_WD%=  1       'リサイズ時の単位ドット数
  1020. 29030 VIL_VWM_ZD%=  1
  1021. 29040 GOSUB *VIL_VWM_CLALL
  1022. 29050 RETURN
  1023. 29060 '
  1024. 29070 *VWM_ALL_9
  1025. 29080 GOSUB *VIL_VWM_CLS
  1026. 29090 CIRCLE((VIL_WIN_W%-VIL_WIN_X%)\2,(VIL_WIN_Z%-VIL_WIN_Y%)\2)                        ,(VIL_WIN_W%-VIL_WIN_X%)\2,1                                                 ,(VIL_WIN_Z%-VIL_WIN_Y%)/(VIL_WIN_W%-VIL_WIN_X%)
  1027. 29100 A$="位置 ("+FNVIL_P2S0$(VIL_WIN_X%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Y%,3)+")"
  1028. 29110 SYMBOL(8, 8),A$,1,1,6
  1029. 29120 A$="   -("+FNVIL_P2S0$(VIL_WIN_W%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Z%,3)+")"
  1030. 29130 SYMBOL(8,28),A$,1,1,6
  1031. 29140 A$="サイズ("+FNVIL_P2S0$(VIL_WIN_W%-VIL_WIN_X%+1,3)+","                                  +FNVIL_P2S0$(VIL_WIN_Z%-VIL_WIN_Y%+1,3)+")"
  1032. 29150 SYMBOL(8,48),A$,1,1,6
  1033. 29160 RETURN
  1034. 29170 '
  1035. 29180 '<<<<<<<<<<<<<<<<<<<<  応用例  >>>>>>>>>>>>>>>>>>>>
  1036. 29190 *APPLY
  1037. 29200 '
  1038. 29210 CLS'SCREEN 1,0:CLS:SCREEN 1,1:CLS
  1039. 29220 *FACE_DEMO_0
  1040. 29230 VIL_MG_PN%=VIL_MG_MGD%(VIL_MG_MGI&(1)+1)
  1041. 29240 GOSUB *VIL_MG_SETP
  1042. 29260 'VIL_MG_PN%=1:GOSUB *VIL_MG_SETP
  1043. 29270 VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
  1044. 29280 VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG:                 WAIT 20
  1045. 29290 T1=0
  1046. 29300 RESTORE *APPLY_MAKU_DATA
  1047. 29310 FOR I=1 TO 17
  1048. 29320   READ VIL_C%,A$,T2,VIL_A$
  1049. 29330   VIL_X%=80:VIL_Y%=450:VIL_L%=64:GOSUB *VIL_INP_GPRINT
  1050. 29340   IF A$="A"                                                                      THEN VIL_MG_GN%=5:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
  1051. 29350   IF A$="B"                                                                      THEN VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
  1052. 29360   IF A$="C" THEN
  1053. 29370     VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG
  1054. 29380     VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
  1055. 29390     WAIT 150
  1056. 29400     VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
  1057. 29410   ENDIF
  1058. 29420   IF A$="D" THEN
  1059. 29430   WAIT 300
  1060. 29440     VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
  1061. 29450   ENDIF
  1062. 29460 '  T2=RND*6
  1063. 29470   J=0:WHILE J<T2
  1064. 29480     VIL_MG_GN%=3:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG:                 WAIT 5+RND*10
  1065. 29490     VIL_MG_GN%=2:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG:                 WAIT 5+RND*10
  1066. 29500     VIL_MG_GN%=3:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG:                 WAIT 5+RND*10
  1067. 29510     IF RND>.3! THEN                                                               VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG:                 WAIT 10+RND*20
  1068. 29520     T1=T1+1
  1069. 29530     IF T1>10+RND*5 THEN
  1070. 29540     VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1071. 29550     VIL_MG_GN%=7:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1072. 29560     VIL_MG_GN%=8:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1073. 29570     VIL_MG_GN%=7:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1074. 29580     VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1075. 29590     VIL_MG_GN%=5:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
  1076. 29600     T1=0
  1077. 29610     ENDIF
  1078. 29620   J=J+1:WEND
  1079. 29630 NEXT
  1080. 29640 CLS:PALETTE@:GOSUB *VIL_VWM_PALSET
  1081. 29650 RETURN
  1082. 29660 *APPLY_MAKU_DATA
  1083. 29670 DATA  2,A,8,"こんにちは。特別出演(?)のまくらちゃんです   "
  1084. 29680 DATA  2,A,7,"VILの開発にはタッチしていないのですが、    "
  1085. 29690 DATA  2,A,6,"なぜか説明役に駆り出されてしまいました。     "
  1086. 29700 DATA  2,A,4,"……それはともかく、                              "
  1087. 29710 DATA  2,A,9,"ここではウィンドウマネージャとマルチグラフィックの"
  1088. 29720 DATA  2,A,5,"連携例などを説明します。                          "   
  1089. 29730 DATA  2,C,0,"……え?                     "
  1090. 29740 DATA  2,A,6,"ごめんなさい、まだできてないみたいです。          "
  1091. 29750 DATA  9,D,0,"[風ガ]し、締切が……ひぃいいい                  "
  1092. 29760 DATA  2,A,8,"本当はウィンドウにアイコンを張りつける例とか、  "
  1093. 29770 DATA  2,A,7,"背景に顔グラフィックがオーバラップする例とか、  "
  1094. 29780 DATA  2,A,6,"いろいろ予定していたようなんですが……      "
  1095. 29790 DATA  2,A,4,"ちなみにこの口パクアニメは、           "
  1096. 29800 DATA  2,A,7,"マルチグラフィックパッケージで実現しています。  "
  1097. 29810 DATA  2,A,3,"これも時間があれば、                              "
  1098. 29820 DATA  2,A,6,"もっといろんな演出をお見せできたのですが。    "
  1099. 29830 DATA 10,D,0,"(……表情が変わらないよぉ、しくしく(;_;))       "
  1100.